package jvm.chapter2;

/**
 * @program: algorithm
 * @description: 运行时常量池
 * @author: 陈恩涛
 * @create: 2021-11-10 19:46
 **/
public class RuntimeConstantPool {

    public static void main(String[] args) {

        // 对于第一次出现的字符串 "计算机科学"，在调用String.intern()方法时，将这个字符串对象的引用直接丢到字符串常量池，并返回这个引用
        String str1 = new StringBuilder("计算机").append("科学").toString();
        System.out.println(str1.intern() == str1);

        // "java"该字符串 在加载sun.misc.Version时已经计入到常量池了，所有调用String.intern()方法时返回的是第一次的加入时的引用地址
        String str2 = new StringBuilder("ja").append("va").toString();
        System.out.println(str2.intern() == str2);

        String str3 = new StringBuilder("小明").toString();
        System.out.println(str3.intern() == str3);

        final String str4 = new StringBuilder("小").append("红").toString();
        System.out.println(str4.intern() == str4);
    }
}
